package cn.fl.ref.fribaseinfo.transform;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import cn.cmm.base.framework.utils.CollectionUtils;
import cn.fl.ref.fribaseinfo.vo.FriBaseInfoVO;
import fl.ref.fribaseinfo.dto.FriBaseInfoDTO;

/**
 * @Description: 融资机构基础信息
 */
public class FriBaseInfoVOTransform {
	
	/**
	 * 分转元
	 * @param number
	 * @return
	 */
	public static BigDecimal fenToYuan(BigDecimal number){
		if(number!=null&&number!=new BigDecimal(0)){
			return number.divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP);
		}
		return null;
	}
	
	/**
	 * 元转分
	 * @param number
	 * @return
	 */
	public static BigDecimal yuanToFen(BigDecimal number){
		if(number!=null&&number!=new BigDecimal(0)){
			return number.multiply(new BigDecimal(100));
		}
		return null;
	} 
	
	/**
	 * DTO 转 VO
	 * 
	 * @param dto
	 * @return
	 */
	public static FriBaseInfoVO toVO(FriBaseInfoDTO dto) {
		FriBaseInfoVO vo = null;
		if (dto != null) {
			vo = new FriBaseInfoVO();
			vo.setId(dto.getId());// 融资机构编号
			vo.setFundRasInsNm(dto.getFundRasInsNm());// 融资机构名称
			vo.setInsTypeCd(dto.getInsTypeCd());// 机构类型
			vo.setInsAbb(dto.getInsAbb());// 机构缩写
			vo.setInsSts(dto.getInsSts());// 机构状态
			vo.setRem(dto.getRem());// 备注信息
			vo.setAttCd(dto.getAttCd());// 附件
			vo.setIsValid(dto.getIsValid());// 是否有效
			vo.setIsDel(dto.getIsDel());// 是否删除
			vo.setIsAbs(dto.getIsAbs());// 是否为ABS
			vo.setInsUseCd(dto.getInsUseCd());// 机构用途
			vo.setInsUseCdNm(dto.getInsUseCdNm());

			vo.setCrtUsrId(dto.getCrtUsrId());
			vo.setCrtTm(dto.getCrtTm());
			vo.setMdfTm(dto.getMdfTm());
			vo.setMdfUsrId(dto.getMdfUsrId());
			vo.setStDt(dto.getStDt());// 开始时间
			vo.setEdDt(dto.getEdDt());// 结束时间
			vo.setCrSt(dto.getCrSt());// 授信状态
			
			vo.setCrLmt(fenToYuan(dto.getCrLmt()));// 授信额度
			vo.setCrBal(fenToYuan(dto.getCrBal()));// 授信余额
			vo.setUseLmt(fenToYuan(dto.getUseLmt()));// 使用额度

			vo.setInsTypeCdNm(dto.getInsTypeCdNm());// 机构类型名称
			vo.setCrStNm(dto.getCrStNm());// 授信状态名称
			vo.setInsStsNm(dto.getInsStsNm()); // 机构状态名称
			
			vo.setInsCode(dto.getInsCode());//机构编号
			vo.setIsService(dto.getIsService());
			vo.setZgNum(dto.getZgNum());//资管优先级
			vo.setZgText(dto.getZgText());//资管提示信息
			vo.setInsRepayType(dto.getInsRepayType());//还款方式
			vo.setInsRepayTypeNm(dto.getInsRepayTypeNm());//还款方式
			vo.setTopFinance(dto.getTopFinance());//融资额上限
			vo.setIsZx(dto.getIsZx());
			vo.setPrjTypCds(dto.getPrjTypCds());
			vo.setBuOrgCds(dto.getBuOrgCds());
			//-------融担数据上报功能 金融机构 维护机构详情 新增字段------------
			vo.setUscc(dto.getUscc());//统一社会信用代码（Unified Social Credit Code）
			vo.setRegCapTm(dto.getRegCapTm());//注册时间
			vo.setRegAddr(dto.getRegAddr());//注册地址
			vo.setFullAddr(dto.getFullAddr());//详细地址维护
			vo.setRegCapAmt(dto.getRegCapAmt());//注册资金
			vo.setRegCapUntCd(dto.getRegCapUntCd());//注册资本计量单位（CST0011）
			vo.setRgnPrCd(dto.getRgnPrCd());//区域-省
			vo.setRgnCyCd(dto.getRgnCyCd());//区域-市
			vo.setFundInsProp(dto.getFundInsProp());//金融机构属性
			vo.setFundInsType(dto.getFundInsType());//金融机构类型
			vo.setCoopTm(dto.getCoopTm());//合作时间
			vo.setGuaranteeCoopNum(dto.getGuaranteeCoopNum());//融担公司企业编号
			
			vo.setBuOrgCdsNm(dto.getBuOrgCdsNm());
			vo.setPrjTypCdsNm(dto.getPrjTypCdsNm());
			//-----
			vo.setBussinessLine(dto.getBussinessLine());//业务线
			vo.setBussinessLineNm(dto.getBussinessLineNm());//业务线
			vo.setReportZt(dto.getReportZt());//融担主体
			vo.setIsReportZx(dto.getIsReportZx());//是否上报征信
			vo.setAudStsCd(dto.getAudStsCd());
			vo.setRemark(dto.getRemark());//卓远备注
			vo.setIsVisitFee(dto.getIsVisitFee());//是否支持家访费
			vo.setIsOutPay(dto.getIsOutPay());
			vo.setmTgWay(dto.getmTgWay());//抵押方式 MTG0002
		}
		return vo;
	}

	/**
	 * VO 转 DTO
	 * 
	 * @param vo
	 * @return
	 */
	public static FriBaseInfoDTO toDTO(FriBaseInfoVO vo) {
		FriBaseInfoDTO dto = null;
		if (vo != null) {
			dto = new FriBaseInfoDTO();
			dto.setId(vo.getId());// 融资机构编号
			dto.setFundRasInsNm(vo.getFundRasInsNm());// 融资机构名称
			dto.setInsTypeCd(vo.getInsTypeCd());// 机构类型
			dto.setInsAbb(vo.getInsAbb());// 机构缩写
			dto.setInsSts(vo.getInsSts());// 机构状态
			dto.setRem(vo.getRem());// 备注信息
			dto.setAttCd(vo.getAttCd());// 附件
			dto.setIsValid(vo.getIsValid());// 是否有效
			dto.setIsDel(vo.getIsDel());// 是否删除
			dto.setIsAbs(vo.getIsAbs());// 是否为ABS
			dto.setInsUseCd(vo.getInsUseCd());// 机构用途
			dto.setInsUseCdNm(vo.getInsUseCdNm());

			dto.setCrtUsrId(vo.getCrtUsrId());
			dto.setCrtTm(vo.getCrtTm());
			dto.setMdfTm(vo.getMdfTm());
			dto.setMdfUsrId(vo.getMdfUsrId());

			dto.setStDt(vo.getStDt());// 开始时间
			dto.setEdDt(vo.getEdDt());// 结束时间
			dto.setCrSt(vo.getCrSt());// 授信状态
			
			dto.setCrLmt(yuanToFen(vo.getCrLmt()));// 授信额度
			dto.setCrBal(yuanToFen(vo.getCrBal()));// 授信余额
			dto.setUseLmt(yuanToFen(vo.getUseLmt()));// 使用额度
			
			dto.setInsTypeCdNm(vo.getInsTypeCdNm());// 机构类型名称
			dto.setCrStNm(vo.getCrStNm());// 授信状态名称
			dto.setInsStsNm(vo.getInsStsNm()); // 机构状态名称
			dto.setInsCode(vo.getInsCode());//机构编号
			dto.setBankAccInfoDTOs(BankAccInfoVOTransform.toDTOList(vo.getBankAccInfoVOs()));
			dto.setIsService(vo.getIsService());
			dto.setZgNum(vo.getZgNum());//资管优先级
			dto.setZgText(vo.getZgText());//资管提示信息
			dto.setInsRepayType(vo.getInsRepayType());//还款方式
			dto.setInsRepayTypeNm(vo.getInsRepayTypeNm());//还款方式
			dto.setTopFinance(vo.getTopFinance());//融资额上限
			dto.setIsZx(vo.getIsZx());
			dto.setPrjTypCds(vo.getPrjTypCds());
			dto.setBuOrgCds(vo.getBuOrgCds());
			//-------融担数据上报功能 金融机构 维护机构详情	新增字段 ----------
			dto.setUscc(vo.getUscc());//统一社会信用代码（Unified Social Credit Code）
			dto.setRegCapTm(vo.getRegCapTm());//注册时间
			dto.setRegAddr(vo.getRegAddr());//注册地址
			dto.setFullAddr(vo.getFullAddr());//详细地址维护
			dto.setRegCapAmt(vo.getRegCapAmt());//注册资金
			dto.setRegCapUntCd(vo.getRegCapUntCd());//注册资本计量单位（CST0011）
			dto.setRgnPrCd(vo.getRgnPrCd());//区域-省
			dto.setRgnCyCd(vo.getRgnCyCd());//区域-市
			dto.setFundInsProp(vo.getFundInsProp());//金融机构属性
			dto.setFundInsType(vo.getFundInsType());//金融机构类型
			dto.setCoopTm(vo.getCoopTm());//合作时间
			dto.setGuaranteeCoopNum(vo.getGuaranteeCoopNum());//融担公司企业编号
			dto.setFundRasInsRlPsnDTOs(FundRasInsRlPsnVOTransform.toDTOList(vo.getFundRasInsRlPsnVOs()));//主要人员信息
			dto.setBuOrgCdsNm(vo.getBuOrgCdsNm());
			dto.setPrjTypCdsNm(vo.getPrjTypCdsNm());
			//-----
			dto.setBussinessLine(vo.getBussinessLine());//业务线
			dto.setReportZt(vo.getReportZt());//融担主体
			dto.setIsReportZx(vo.getIsReportZx());//是否上报征信
			dto.setAudStsCd(vo.getAudStsCd());
			dto.setRemark(vo.getRemark());
			dto.setIsVisitFee(vo.getIsVisitFee());//是否支持家访费
			dto.setIsOutPay(vo.getIsOutPay());
			dto.setmTgWay(vo.getmTgWay());//抵押方式 MTG0002
		}
		return dto;
	}
	
	/**
	 * DTO集合 转 VO集合
	 * 
	 * @param list
	 * @return
	 */
	public static List<FriBaseInfoVO> toVOList(List<FriBaseInfoDTO> list) {
		List<FriBaseInfoVO> voList = new ArrayList<FriBaseInfoVO>();
		if (CollectionUtils.isNotEmpty(list)) {
			for (FriBaseInfoDTO po : list) {
				voList.add(toVO(po));
			}
		}
		return voList;
	}
}
